在以前Java中要進行寫檔是一個建很麻煩的事情,要記得create file,得到BufferReader
後還要透過close
並且記得try catch避免exception發生,而kotlin提供了一個appendText
的extension,讓你直接可以對file進行寫入文字
File("path\fileName.txt") .appendText("Hello")
如果你要持續寫入就可以變成
val file = File("path\fileName.txt")
file.appendText("Hello")
file.appendText(" World")
file.appendText(" :)")
如此就可以完成寫入文字了,也不需要額外的進行close
或者flush
那他實際是怎麼運作的? 他其實是一個kotlin extension
從source code可以看到他是在kotlin 1.4增加的 extension,並且他其實有兩個參數,第二個是encoding ,default value 是utf-8,如果你沒有要額外指定編碼,就不需要額外設定,
而他呼叫了另一個appendText
,並且先將String toBytesArray
傳入
實際是透過FileOutputStream
後透過use
這個T.extension,透過他就可以直接對bytes寫入,並且在scope結束後會自動進行close ,也就是每一次的appendText
,都會造成他馬上進行寫檔,因此如果你是一個大量快速的log,會比較不建議使用appendText
,因為這樣會造成大量的IO,也可能會影響速度(大量的話會建議改成在一定buffer後才進行IO寫入)
以上就是File的appendText使用方法與原理,其實他還有writeText
、readText
,writeBytes
跟readLines
等等其他方便使用的extension,對於要簡易進行文字寫入的話就可以參考並且理解看看他的原理囉。